<?php

Class SeguradoDAO{
    
    public function listarSegurados() {
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("
                SELECT * 
                FROM `segurado`
            ");

            $segurado = array();
            $count = 0;

            foreach ($result as $value) {

                //Recupera valores dos seguros
                $segurado[$count] = new Segurado();
                $segurado[$count]->setIdSegurado($value['id']);
                $segurado[$count]->setTipo(utf8_encode($value['tipo']));
                $segurado[$count]->setNome(utf8_encode($value['nome']));
                $segurado[$count]->setCpf(utf8_encode($value['cpf']));
                $segurado[$count]->setSexo(utf8_encode($value['sexo']));
                $segurado[$count]->setLogradouro(utf8_encode($value['logradouro']));
                $segurado[$count]->setBairro(utf8_encode($value['bairro']));
                $segurado[$count]->setCidade(utf8_encode($value['cidade']));
                $segurado[$count]->setEstado(utf8_encode($value['estado']));
                $segurado[$count]->setCep(utf8_encode($value['cep']));
                $segurado[$count]->setTelefone(utf8_encode($value['telefone']));
                $segurado[$count]->setEmail(utf8_encode($value['email']));
                $segurado[$count]->setEstadoCivil(utf8_encode($value['estado_civil']));
                $segurado[$count]->setDataNascimento(utf8_encode($value['data_nascimento']));
                $count++;
            }

            $conn = $conexao->fecharConexao();
            return $segurado;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
        
    }
    
    public function cadastrarSegurado(Segurado $segurado) {
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();
            
            //Codigo SQL
            $query = "
                INSERT INTO segurado (id, tipo, nome, cpf, sexo, logradouro, numero, 
                    complemento, bairro, cidade, estado, cep, telefone, email, 
                    estado_civil, data_nascimento) 
                VALUES (NULL, 'FISICA', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);
            ";
            
            //converter datas
            //$data = new Utilitarios();
            
            $data = new Utilitarios();
            $dataNascimento = $data->ConverteDataBanco($segurado->getDataNascimento());
            
            //Cadastro Usuario
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, utf8_decode($segurado->getNome()));
            $stmt->bindValue(2, utf8_decode($segurado->getCpf()));
            $stmt->bindValue(3, utf8_decode($segurado->getSexo()));
            $stmt->bindValue(4, utf8_decode($segurado->getLogradouro()));
            $stmt->bindValue(5, utf8_decode($segurado->getNumero()));
            $stmt->bindValue(6, utf8_decode($segurado->getComplemento()));
            $stmt->bindValue(7, utf8_decode($segurado->getBairro()));
            $stmt->bindValue(8, utf8_decode($segurado->getCidade()));
            $stmt->bindValue(9, utf8_decode($segurado->getEstado()));
            $stmt->bindValue(10, utf8_decode($segurado->getCep()));
            $stmt->bindValue(11, utf8_decode($segurado->getTelefone()));
            $stmt->bindValue(12, utf8_decode($segurado->getEmail()));
            $stmt->bindValue(13, utf8_decode($segurado->getEstadoCivil()));
            $stmt->bindValue(14, $dataNascimento);
            $stmt->execute();
            
            $idSegurado = $conn->lastInsertId();
            
            $conn = $conexao->fecharConexao();
            return $idSegurado;
            
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
        
    }
    
    public function editarSegurado(Segurado $segurado) {
        
        try {

            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();
            
            //Codigo SQL
            $query = "
                UPDATE segurado SET tipo = ?, nome = ?, cpf = ?, sexo = ?, 
                logradouro = ?, numero = ?, complemento = ?, `bairro` = ?, 
                cidade = ?, estado = ?, cep = ?, telefone = ?, email = ?, 
                estado_civil = ?, data_nascimento = ? WHERE id = ".$segurado->getIdSegurado().";
            ";
            
            //converter datas
            //$data = new Utilitarios();
            
            $data = new Utilitarios();
            $dataNascimento = $data->ConverteDataBanco($segurado->getDataNascimento());
            
            //Cadastro Usuario
            $stmt = $conn->prepare($query);
            $stmt->bindValue(1, utf8_decode($segurado->getTipo()));
            $stmt->bindValue(2, utf8_decode($segurado->getNome()));
            $stmt->bindValue(3, utf8_decode($segurado->getCpf()));
            $stmt->bindValue(4, utf8_decode($segurado->getSexo()));
            $stmt->bindValue(5, utf8_decode($segurado->getLogradouro()));
            $stmt->bindValue(6, utf8_decode($segurado->getNumero()));
            $stmt->bindValue(7, utf8_decode($segurado->getComplemento()));
            $stmt->bindValue(8, utf8_decode($segurado->getBairro()));
            $stmt->bindValue(9, utf8_decode($segurado->getCidade()));
            $stmt->bindValue(10, utf8_decode($segurado->getEstado()));
            $stmt->bindValue(11, utf8_decode($segurado->getCep()));
            $stmt->bindValue(12, utf8_decode($segurado->getTelefone()));
            $stmt->bindValue(13, utf8_decode($segurado->getEmail()));
            $stmt->bindValue(14, utf8_decode($segurado->getEstadoCivil()));
            $stmt->bindValue(15, $dataNascimento);
            $stmt->execute();
                       
            $conn = $conexao->fecharConexao();
            return true;
            
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
            return false;
        }
        
    }
    
    public function selecionarSegurado($idSegurado) {
        
        try {
            //Banco de dados
            $conexao = new Conexao();
            $conn = $conexao->abrirConexao();

            //Codigo SQL
            $result = $conn->query("
                SELECT * 
                FROM segurado
                WHERE id = " . $idSegurado . " 
            ");
            //SELECT *  FROM `seguradora` WHERE `id` = 1 AND `shadow` = 0

            $num = count($result);
            if ($num == 0) {
                
                $seguradora = false;
                
            } else {
                $segurado = new Segurado();
                foreach ($result as $value) {
                    
                    //converter datas
                    $data = new Utilitarios();
                    $dataNascimento = $data->ConverteDataBrasil($value['data_nascimento']);
                    
                    $segurado->setTipo($value['tipo']);
                    $segurado->setNome($value['nome']);
                    $segurado->setCpf($value['cpf']);
                    $segurado->setSexo($value['sexo']);
                    $segurado->setLogradouro($value['logradouro']);
                    $segurado->setNumero($value['numero']);
                    $segurado->setComplemento($value['complemento']);
                    $segurado->setBairro($value['bairro']);
                    $segurado->setCidade($value['cidade']);
                    $segurado->setEstado($value['estado']);
                    $segurado->setCep($value['cep']);
                    $segurado->setTelefone($value['telefone']);
                    $segurado->setEmail($value['email']);
                    $segurado->setEstadoCivil($value['estado_civil']);
                    $segurado->setDataNascimento($dataNascimento);
                }
            }

            $conn = $conexao->fecharConexao();
            return $segurado;
        } catch (Exception $exc) {
            echo $exc->getTraceAsString();
        }
        
    }
    
}

?>
